<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>严格模式</title>
    <!-- 
        什么是严格模式
        JavaScript 除了提供正常模式外，还提供了严格模式（strict mode）。ES5 的严格模式是采用具有限制性 JavaScript 变体的一种方式，即在严格的条件下运行 JS 代码。

        严格模式在 IE10 以上版本的浏览器中才会被支持，旧版本浏览器中会被忽略。

        严格模式对正常的 JavaScript 语义做了一些更改：

        1. 消除了 Javascript 语法的一些不合理、不严谨之处，减少了一些怪异行为。

        2. 消除代码运行的一些不安全之处，保证代码运行的安全。

        3. 提高编译器效率，增加运行速度。

        4. 禁用了在 ECMAScript 的未来版本中可能会定义的一些语法，为未来新版本的 Javascript 做好铺垫。比 如一些保留字如：class, enum, export, extends, import, super 不能做变量名

     -->
</head>
<body>
    
</body>
<script>
    'use strict';
    // 下面的js代码就会按照严格模式执行代码
</script>
<script>
    // 为整个脚本开启严格模式
    (function (){
       "use strict";
       var num = 10;
       function fn() {}
     })();
 </script>
 <script>
    // 只是给fn函数开启了严格模式
    function fn() {
        'use strict';
        // 下面的代码按照严格模式执行
    }
    function f() {
        // 里面的还是按照普通的函数执行
    }
 </script>
<!-- 
    开启严格模式
严格模式可以应用到整个脚本或个别函数中。因此在使用时，我们可以将严格模式分为为脚本开启严格模式和为函数开启严格模式两种情况。

为脚本开启严格模式
有的 script 基本是严格模式，有的 script 脚本是正常模式，这样不利于文件合并，所以可以将整个脚本文件 放在一个立即执行的匿名函数之中。这样独立创建一个作用域而不影响其他 script 脚本文件。
 (function (){
       "use strict";
       var num = 10;
       function fn() {}
     })();
为函数开启严格模式

要给某个函数开启严格模式，需要把“use strict”; (或 'use strict'; ) 声明放在函数体所有语句之前。

function fn(){
    "use strict";
    return "这是严格模式。";
}
 将 "use strict" 放在函数体的第一行，则整个函数以 "严格模式" 运行。


 -->
</html>